//class Solution {
//public:
//    int lengthOfLongestSubstring(string s)
//    {
//        int hash[128] = { 0 };
//        int left = 0, right = 0, ret = 0, n = s.size();
//        while (right < n)
//        {
//            hash[s[right]]++;
//            while (hash[s[right]] > 1)
//            {
//                hash[s[left++]]--;
//            }
//            ret = max(ret, right - left + 1);
//            ++right;
//        }
//        return ret;
//    }
//};



//class Solution {
//public:
//    int minSubArrayLen(int target, vector<int>& nums)
//    {
//        int len = INT_MAX, sum = 0;
//        for (int left = 0, right = 0; right < nums.size(); ++right)
//        {
//            sum += nums[right];
//            while (sum >= target)
//            {
//                len = min(len, right - left);
//                sum -= nums[left++];
//            }
//        }
//        return len == INT_MAX ? 0 : len + 1;
//    }
//};

//class Solution {
//public:
//    int longestOnes(vector<int>& nums, int k)
//    {
//        int ret = 0;
//        for (int left = 0, right = 0, count = 0; right < nums.size(); ++right)
//        {
//            if (nums[right] == 0) ++count;
//            while (count > k)
//            {
//                if (nums[left++] == 0) --count;
//            }
//            ret = max(ret, right - left + 1);
//        }
//        return ret;
//    }
//};